package Visitor;

public class Computer implements ComputerPart{

    ComputerPart[] computerParts;

    public Computer(){
        computerParts = new ComputerPart[]{new Keyboard(), new Mouse(), new Monitor()};
    }

    @Override
    public void acceptOperation(ComputerPartVisitor computerPartVisitor) {
        // 当访问者访问 该类时 ,,, ,,, 根据访问者不同的类型 做出不同的判断.
        // 当然可以 重载方法. or 本身就在接口中声明好不同名的 方法定义, 本质一样
        computerPartVisitor.visit(this);

        for (int i = 0; i < computerParts.length; i++) {
            // 遍历 访问
            computerParts[i].acceptOperation(computerPartVisitor);
        }
    }
}
